import { createStore } from 'vuex'

export default createStore({
  state: {
    // cartList:{
    //   // 第一层是商铺id
    //   shopId:{
    //     // 第二层是商品id
    //     productId:{
    //       _id:1,
    //       name:'番茄',
    //       imgUrl:'...',
    //       sales:10,
    //       price:33,
    //       oldPrice: 22,
    //       count: 2,        
    //     }
    //   }
    // }
    cartList:{},
    vuexTotalPrice:{//新增数据时，保存总价信息

    }
  },
  getters: {

  },
  mutations: {
    changeCartItemInfo(state,payload){
      const {shopId, productId, productInfo,num } = payload;
      // 通过传入的shopId，读取vuex里的shopInfo，
      let shopInfo = state.cartList[shopId];
      let sumPrice = 0;
      // console.log(state.cartList);
      if(!shopInfo){// 如果此时购物车为空，则创建空对象
        shopInfo={};
      }
      // 根据对应商品id读取商品信息
      let vxProductInfo = shopInfo[productId];
      if(!vxProductInfo){// 如果此时商品信息为空，则等于传入的商品信息
        vxProductInfo = productInfo;
        vxProductInfo.count = 0; // 第一次添加时，构建商品的同时数量设置为0
      }
      // 非0判断 if(vxProductInfo.count < 0)  vxProductInfo.count = 0;
      if(vxProductInfo.count !== 0 || num > 0){
        vxProductInfo.count+=num;
      }
      sumPrice = vxProductInfo.price * vxProductInfo.count;
      if(num > 0){vxProductInfo.check = true}

      shopInfo[productId] = vxProductInfo;
      // shopInfo.Aprice = sumPrice;
      state.cartList[shopId] = shopInfo;//将构建好的商品信息存入shopInfo
      console.log("shopInfo:",shopInfo);
      // console.log(state.cartList[shopId][productId].count );

      /**
       * 点击增减按钮触发函数，传入
        shopId(判断是是哪个商铺，
        productId(判断是商铺里哪个商品
        productInfo(提供商品信息，
        如果购物车已经有对应shop，就读该shopInfo，(没有创建空对象)
        然后判断购物车里面对应商品有的话，直接跟进商品id读出来操作该商品信息，没有的话就等于传入的商品信息
        最后vxProductInfo就是操作完的一条商品信息，存入shopInfo即可
      */
     },
    // 点击全选，所有商品被选中
    setCartItemsChecked(state, payload){
      const { shopId,allChecked } = payload;
      const products = state.cartList[shopId];
      if(allChecked){//全选反选
        
        for(let key in products){
          const product = products[key];
          product.check = false;
        }
      }
      else if(products){
        for(let key in products){
          const product = products[key];
          product.check = true;
        }
      }
    },

    //  单选商品
     changeCartItemChecked(state, payload){
      const {shopId, productId} = payload;
      const product = state.cartList[shopId][productId];
      product.check = !product.check
     },
    //  清空所有商品
     clearCarData(state,payload){
       const {shopId} = payload;
       console.log(state.cartList[shopId]);
      state.cartList[shopId] = {};
     },
     // 商品总价
     changeTotalPrice(state,payload){
      const { shopId,sumPrice,Aprice } = payload;
      if(!state.vuexTotalPrice[shopId]){
        state.vuexTotalPrice[shopId] = {};
      }
      if(sumPrice!==undefined){
        state.vuexTotalPrice[shopId].sumPrice = sumPrice;
      }
      if(Aprice!==undefined){
        state.vuexTotalPrice[shopId].Aprice = Aprice;
      }
     }
  },
  actions: {

  },
  modules: {
    
  }
})
